package com.csw.scala

object Demo12Fun3 {
  def main(args: Array[String]): Unit = {

    /**
      * 以函数作为参数的应用
      *
      */
    val arr: Array[Int] = Array(1, 2, 3, 4, 5, 6, 7, 8, 9)

    for (elem <- arr) {
      println(elem)
    }
    //将数组中的每一个元素加一，

    var index =0
    while (index < arr.length){
      val i = arr(index)
      val j = i + 1
      arr(index) = j

      index += 1
    }
    for (elem <- arr) {
      println(elem)
    }
    //mkString 将集合中的元素通过一个分隔符拼接成一个字符串，和split功能相反

    val str: String = arr.mkString(",")
    println(str)



    /**
      * map函数： 将集合中的元素一个一个传递给后面的函数，最终返回一个新的集合
      *
      */
    val arr2: Array[Int] = Array(1, 2, 3, 4, 5, 6, 7, 8, 9)


    val arr3: Array[Int] = arr2.map((s: Int) => s * 2)
    println(arr3.mkString(","))

    //将集合中的元素奇数加一偶数乘二
    val arr4: Array[Int] = arr2.map((i: Int) => {
      if (i % 2 == 0) {
        //代码块结尾作为返回值
        i * 2
      } else {
        //代码块结尾作为返回值
        i + 1
      }
    })
    println(arr4.mkString(","))

    //将集合中元素的类型转换成String类型
    val arr5 = arr2.map((s: Int) => s.toString)

    //简写：参数类型可以不写，会根据类型自动推断出来
    val arr5a = arr2.map(s => s.toString)

    //简写：如果参数只使用了可以使用下划线代替
    val arr5b = arr2.map(_.toString)


  }
}
